home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ggggrrrraaaabbbb((((3333TTTTkkkk)))) ggggrrrraaaabbbb((((3333TTTTkkkk))))
-
-
-
- NNNNAAAAMMMMEEEE
- grab - Confine pointer and keyboard events to a window sub-tree
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ggggrrrraaaabbbb ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w
- ggggrrrraaaabbbb _o_p_t_i_o_n ?_a_r_g _a_r_g ...?
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This command implements simple pointer and keyboard grabs for Tk. Tk's
- grabs are different than the grabs described in the Xlib documentation.
- When a grab is set for a particular window, Tk restricts all pointer
- events to the grab window and its descendants in Tk's window hierarchy.
- Whenever the pointer is within the grab window's subtree, the pointer
- will behave exactly the same as if there had been no grab at all and all
- events will be reported in the normal fashion. When the pointer is
- outside _w_i_n_d_o_w's tree, button presses and releases and mouse motion
- events are reported to _w_i_n_d_o_w, and window entry and window exit events
- are ignored. The grab subtree ``owns'' the pointer: windows outside the
- grab subtree will be visible on the screen but they will be insensitive
- until the grab is released. The tree of windows underneath the grab
- window can include top-level windows, in which case all of those top-
- level windows and their descendants will continue to receive mouse events
- during the grab.
-
- Two forms of grabs are possible: local and global. A local grab affects
- only the grabbing application: events will be reported to other
- applications as if the grab had never occurred. Grabs are local by
- default. A global grab locks out all applications on the screen, so that
- only the given subtree of the grabbing application will be sensitive to
- pointer events (mouse button presses, mouse button releases, pointer
- motions, window entries, and window exits). During global grabs the
- window manager will not receive pointer events either.
-
- During local grabs, keyboard events (key presses and key releases) are
- delivered as usual: the window manager controls which application
- receives keyboard events, and if they are sent to any window in the
- grabbing application then they are redirected to the focus window.
- During a global grab Tk grabs the keyboard so that all keyboard events
- are always sent to the grabbing application. The ffffooooccccuuuussss command is still
- used to determine which window in the application receives the keyboard
- events. The keyboard grab is released when the grab is released.
-
- Grabs apply to particular displays. If an application has windows on
- multiple displays then it can establish a separate grab on each display.
- The grab on a particular display affects only the windows on that
- display. It is possible for different applications on a single display
- to have simultaneous local grabs, but only one application can have a
- global grab on a given display at once.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ggggrrrraaaabbbb((((3333TTTTkkkk)))) ggggrrrraaaabbbb((((3333TTTTkkkk))))
-
-
-
- The ggggrrrraaaabbbb command can take any of the following forms:
-
- ggggrrrraaaabbbb ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w
- Same as ggggrrrraaaabbbb sssseeeetttt, described below.
-
- ggggrrrraaaabbbb ccccuuuurrrrrrrreeeennnntttt ?_w_i_n_d_o_w?
- If _w_i_n_d_o_w is specified, returns the name of the current grab window
- in this application for _w_i_n_d_o_w's display, or an empty string if
- there is no such window. If _w_i_n_d_o_w is omitted, the command returns
- a list whose elements are all of the windows grabbed by this
- application for all displays, or an empty string if the application
- has no grabs.
-
- ggggrrrraaaabbbb rrrreeeelllleeeeaaaasssseeee _w_i_n_d_o_w
- Releases the grab on _w_i_n_d_o_w if there is one, otherwise does nothing.
- Returns an empty string.
-
- ggggrrrraaaabbbb sssseeeetttt ?----gggglllloooobbbbaaaallll? _w_i_n_d_o_w
- Sets a grab on _w_i_n_d_o_w. If ----gggglllloooobbbbaaaallll is specified then the grab is
- global, otherwise it is local. If a grab was already in effect for
- this application on _w_i_n_d_o_w's display then it is automatically
- released. If there is already a grab on _w_i_n_d_o_w and it has the same
- global/local form as the requested grab, then the command does
- nothing. Returns an empty string.
-
- ggggrrrraaaabbbb ssssttttaaaattttuuuussss _w_i_n_d_o_w
- Returns nnnnoooonnnneeee if no grab is currently set on _w_i_n_d_o_w, llllooooccccaaaallll if a local
- grab is set on _w_i_n_d_o_w, and gggglllloooobbbbaaaallll if a global grab is set.
-
-
- BBBBUUUUGGGGSSSS
- It took an incredibly complex and gross implementation to produce the
- simple grab effect described above. Given the current implementation, it
- isn't safe for applications to use the Xlib grab facilities at all except
- through the Tk grab procedures. If applications try to manipulate X's
- grab mechanisms directly, things will probably break.
-
- If a single process is managing several different Tk applications, only
- one of those applications can have a local grab for a given display at
- any given time. If the applications are in different processes, this
- restriction doesn't exist.
-
-
- KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
- grab, keyboard events, pointer events, window
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-